package com.factory.rental.service;

import com.factory.rental.model.Tenant;
import com.factory.rental.dto.TenantDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

public interface TenantService {
    Tenant saveTenant(TenantDTO tenantDTO);

    Optional<Tenant> getTenantById(Long id);

    Optional<Tenant> getTenantByIdCard(String idCard);

    Optional<Tenant> getTenantByPhone(String phone);

    List<Tenant> getTenantsByName(String name);

    List<Tenant> getTenantsByStatus(Tenant.TenantStatus status);

    List<Tenant> getBlacklistedTenants();

    Tenant updateTenant(Long id, TenantDTO tenantDTO);

    void deleteTenant(Long id);

    void blacklistTenant(Long id, boolean blacklist);

    Page<Tenant> getAllTenants(Pageable pageable, String keyword);
    
    default Page<Tenant> getAllTenants(Pageable pageable) {
        return getAllTenants(pageable, "");
    }
}